Phát triển kernel CUDA bắt đầu bằng việc định nghĩa một kernel, là một hàm C++ chuyên biệt được thiết kế để thực thi song song trên số lượng lõi khổng lồ của một GPU NVIDIA. Những hàm này đại diện cho đơn vị công việc cơ bản trong mô hình lập trình CUDA, đóng vai trò như cầu nối nơi logic tuần tự từ máy chủ chuyển sang thực thi song song quy mô lớn trên thiết bị.
1. Bộ chỉ định __global__
Bộ chỉ định __global__ không thể thiếu trong API, chỉ thị trình biên dịch tạo mã cho GPU nhưng vẫn giữ điểm vào hàm hiển thị với CPU. Những hàm thực thi trên GPU và có thể gọi từ máy chủ được gọi là kernel.
2. Môi trường thực thi
Các kernel được phân bổ đến và thực thi trên Đơn vị xử lý luồng (SMs). SM là động cơ tính toán chính bên trong GPU NVIDIA, chịu trách nhiệm quản lý hàng trăm luồng đồng thời. Mỗi SM xử lý các khối luồng và lên lịch chúng chạy trên các nhân xử lý.
Quy tắc cú pháp: Các kernel phải trả về chính xác void. Vì chúng hoạt động bất đồng bộ với máy chủ, chúng không thể trả về giá trị trực tiếp cho CPU; phải ghi kết quả trở lại bộ nhớ thiết bị đã cấp phát.